/*
 * MeasWorld.h
 *
 *  Created on: Oct 19, 2012
 *      Author: johnny
 */

#ifndef MEASWORLD_H_
#define MEASWORLD_H_

#include <iostream>

#define BOOST_FILESYSTEM_NO_DEPRECATED
#define BOOST_FILESYSTEM_VERSION 3

#include <boost/filesystem.hpp>
#include <boost/thread.hpp>

#include "Engine.h"
#include "ConfigurationManager.h"
#include "measurement/MeasBase.hpp"
#include "UserSettings.h"

using namespace std;

namespace core {

class MeasWorld {
    MeasWorld();
    MeasWorld(const MeasWorld&): cfgManager(ConfigurationManager::getInstance()),
        engine(Engine::getInstance()) {}
    void operator=(const MeasWorld&) {}

    ConfigurationManager& cfgManager;
    Engine& engine;

    boost::thread *engineThreadRun;
    boost::thread *genericMIThreadRun;
public:
	virtual ~MeasWorld();

	bool setup();
    void close();
    bool loadRec(std::string);

    static MeasWorld& getInstance();
};

} /* namespace ai */
#endif /* MEASWORLD_H_ */
